In wireless communication systems, multiple-input multiple-output (MIMO) technology is used to increase transmission capacity and quality. MIMO technology may find use in a variety of applications including, for example, 3G and 4G systems, such as in third generation partnership project (3GPP) long term evolution (LTE) networks and/or LTE-Advanced networks, the Institute of Electrical and Electronics Engineers (IEEE) 802.16 standard (e.g., 802.16p), which is commonly known to industry groups as WiMAX (Worldwide interoperability for Microwave Access), and the IEEE 802.11 standard, which is commonly known to industry groups as WiFi. In 3GPP radio access networks (RANs) in LTE systems, the transmission station can be a combination of Evolved Universal Terrestrial Radio Access Network (E-UTRAN) Node Bs (also commonly denoted as evolved Node Bs, enhanced Node Bs, eNodeBs, or eNodeBs) and Radio Network Controllers (RNCs) in an E-UTRAN, which communicates with the wireless mobile device, known as a user equipment (UE).
To achieve better spatial multiplexing with a high transmission rate, a transmitter (e.g., at an access point or base station such as an eNodeB) performs beamforming and power allocation according to channel state. A receiver (e.g., at user's mobile phone or other UE) measures channel state information (CSI) and provides feedback to the transmitter. The CSI of a MIMO system may be represented by a matrix having a plurality of complex elements. Based on the number of antennas and users, the CSI matrix may be very large. To reduce the overhead of the uplink channel, some wireless systems use a codebook-based pre-coding method where the UE selects a pre-coding matrix from a codebook according to the measured CSI matrix, and feeds back an index corresponding to the selected pre-coding matrix to the eNodeB. The eNodeB then obtains the pre-coding matrix by looking up the codebook according to the index, and pre-codes data to be transmitted using this pre-coding matrix (e.g., in single-user MIMO) or a newly calculated pre-coding matrix based on the pre-coding matrices received from multiple UEs (e.g., in multi-user MIMO).